﻿//
//    ___ _____ ___  ___ __  __ 
//   / __|_   _/ _ \| _ \  \/  |
//   \__ \ | || (_) |   / |\/| |
//   |___/ |_| \___/|_|_\_|  |_|
// 
//   Storm.TabControl.dll
//   ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
//     Storm.TabControl.dll was created under the LGPL license.
//     It was based on another .dll and evolved from that one.
//     The original .dll was created by Hadi Eskandari.
//
//   What is Storm?
//   ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
//     Storm is a set of dynamic link libraries used in Theodor
//     "Vestras" Storm Kristensen's application "Moonlite".
//     
//
//   Thanks:
//   ¯¯¯¯¯¯¯
//     - Hadi Eskandari for creating and publishing the library.
//
//
//   Copyright (c) Theodor "Vestras" Storm Kristensen 2009
//   ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
//

namespace Storm.TabControl
{
    using System;

    #region TabStripItemMouseEventArgs
    public class TabStripItemMouseEventArgs : EventArgs
    {
        public TabStripItemMouseEventArgs(TabStripItem item)
        {
            _item = item;
        }

        private TabStripItem _item;
        public TabStripItem Item
        {
            get { return _item; }
            set { _item = value; }
        }
    }
    #endregion

    #region TabStripItemClosingEventArgs
    public class TabStripItemClosingEventArgs : EventArgs
    {
        public TabStripItemClosingEventArgs(TabStripItem item)
        {
            _item = item;
        }

        private bool _cancel = false;
        private TabStripItem _item;

        public TabStripItem Item
        {
            get { return _item; }
            set { _item = value; }
        }

        public bool Cancel
        {
            get { return _cancel; }
            set { _cancel = value; }
        }

    }
    #endregion

    #region TabStripItemChangedEventArgs
    public class TabStripItemChangedEventArgs : EventArgs
    {
        TabStripItem itm;
        TabStripItemChangeTypes changeType;

        public TabStripItemChangedEventArgs(TabStripItem item, TabStripItemChangeTypes type)
        {
            changeType = type;
            itm = item;
        }

        public TabStripItemChangeTypes ChangeType
        {
            get { return changeType; }
        }

        public TabStripItem Item
        {
            get { return itm; }
        }
    }
    #endregion

    public delegate void SelectedItemChangedHandler(TabStripItemMouseEventArgs e);
    public delegate void TabStripItemMouseEnterHandler(TabStripItemMouseEventArgs e);
    public delegate void TabStripItemMouseLeaveHandler(TabStripItemMouseEventArgs e);
    
    public delegate void TabStripItemChangedHandler(TabStripItemChangedEventArgs e);
    public delegate void TabStripItemClosingHandler(TabStripItemClosingEventArgs e);
}